package org.jeecg.modules.enhance.java;

import java.util.Map;

import org.jeecg.common.util.FillRuleUtil;
import org.jeecg.modules.online.cgform.enhance.CgformEnhanceJavaInter;
import org.jeecg.modules.online.config.exception.BusinessException;
import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSONObject;
/*
 * 该类为共有编码类 
 * 
 * 编码规则管理里中配置 前缀、流水号长度、和编码标签 
 * 在系统编码规则里配置 使用标签 和上编码标签一样 ,传参数固定为 {"codeKey":"编码标签"} 类固定为org.jeecg.modules.system.rule.CodeNumberRule
 * 
 * 使用规则（针对在线开发）：
 * 需要针对表单“新增”按钮 java增强
 * java增强选择 新增事件前、Java Class 、路径为 org.jeecg.modules.enhance.java.CgformEnhanceImport
 * 在线开发时候 编码字段的命名固定为 “code_num” 标记为只读、必须在表单中显示
 * 额外新增一个标签字段 “code_num_key” 注意：非空、默认值和控件默认值均为 编码标签（编码管理）标记为只读、必须在表单中显示、列表不显示
 * 
 * 源码开发
 * String formDataJsonString = "{\"codeKey\":\"" + codeNumKey + "\"}";
		JSONObject jsonObject = JSONObject.parseObject(formDataJsonString);
		Object code = FillRuleUtil.executeRule(codeNumKey, jsonObject);
		System.out.println(code.toString());
 */

@Component("cgformEnhanceImport")
public class CgformEnhanceImport implements CgformEnhanceJavaInter {

	@Override
	public int execute(String tableName, JSONObject json) throws BusinessException {
		String codeNumKey = "key";
		String formDataJsonString = "formDataJsonString";
		if(tableName.equals("stone_style") ) {//石号（规格）管理
			if(json.getString("code_num") != null && !"".equals(json.getString("code_num").trim())) {//不为空就返回
				json.put("code_num",json.getString("code_num").trim());
				return 1;
			}
			codeNumKey = "stone_num_code";
		} else if (tableName.equals("accessory_info")) {//配件资料管理
			if(json.getString("code_num") != null && !"".equals(json.getString("code_num").trim())) {//不为空就返回
				json.put("code_num",json.getString("code_num").trim());
				return 1;
			}
			codeNumKey = "accessory_code";
		} else {
			codeNumKey = json.getString("code_num_key");
		}
		formDataJsonString = "{\"codeKey\":\"" + codeNumKey + "\"}";
		JSONObject jsonObject = JSONObject.parseObject(formDataJsonString);
		Object code = FillRuleUtil.executeRule(codeNumKey, jsonObject);
		json.put("code_num", code);
		// return 0 = 丢弃
		// return 1 = 新增
		// return 2 = 修改
		return 1;
	}

	@Override
	public int execute(String tableName, Map<String, Object> map) throws BusinessException {
		return 1;
	}

}